package cn.tedu.jdkx.jdk8;

public class LambdaDemo1 {
    public static void main(String[] args) {
       /* //创建接口实现类对象调用接口的默认的实体方法
        System.out.println(new CalcImpl().cj(1,2));
        //创建匿名内部类对象调用接口里实体方法
        System.out.println(new Calc(){}.cj(1,2));*/
        //接口直接调用实体方法（静态方法）
       // System.out.println(Calc.sum(1,2));

        //Lambda表达式---实现接口重写抽象方法
        //前提：接口里只有一个抽象方法
        //(参数列表)->{重写方法的方法体}
        //Calc c=(int x,int y)->{return x>y?x:y;};
        //由前推导出参数类型，可以省略参数类型不写
        //如果重写方法的方法体只有一句话可以省略{}和return不写
        Calc c=(x,y)->x>y?x:y;
        System.out.println(c.max(1,2));
    }
}



//接口---计算器
//接口里只有一个抽象---函数式接口---函数式编程
@FunctionalInterface
interface Calc{
    //求大小---抽象方法
    int max(int x,int y);
    //求乘积---实体方法（默认方法）
    public default int cj(int x,int y){
        return x*y;
    }
    //求和---实体方法（静态方法）
    public static int sum(int x,int y){
        return x+y;
    }
}

//接口的实现类
/*class CalcImpl implements Calc{

}*/







